使用ffmpeg合并米家摄像头视频文件

您所在的位置:网站首页 ffmpeg -map 使用ffmpeg合并米家摄像头视频文件

使用ffmpeg合并米家摄像头视频文件

#使用ffmpeg合并米家摄像头视频文件| 来源: 网络整理| 查看: 265

米家摄像头标准版的录像文件在内存卡中存储逻辑是

record

|-- day

    |--  hour

        |-- minute

            |-- 3 seconds

每3秒一个mp4文件,让转存后回放十分麻烦。。

于是写了如下CMD脚本,使用ffmpeg合并视频。。

@echo off& setlocal EnableDelayedExpansion rem =======================配置======================= rem 在这里设置你的录像record文件夹和转码视频输出文件夹 rem 文件路径使用 \ 而不是 / rem 请保持最后是 \ set record_dir=G:\record\ set output_dir=F:\converted\ rem ================================================== set tmp_dir=%~dp0tmp_ffmpeg_txtfiles rd /s /q !tmp_dir! mkdir !tmp_dir! for /f "delims=" %%a in ('dir /ad/b "!record_dir!"') do (     set dat=%%a     set dir=!record_dir!!dat!\     echo 开始处理 !dat!     echo 正在查找文件......          set files_cnt=0     for /f "delims=" %%b in ('dir /ad/b "!dir!"') do (         set dir_1=!dir!%%b         for /f "delims=" %%d in ('dir /ad/b "!dir_1!"') do (             set dir_2=!dir_1!\%%d             for /f %%s in ('dir /b "!dir_2!\*.mp4"') do (                 set fp=!dir_2!/%%s                 echo file !fp:\=/! >> !tmp_dir!\!dat!.txt                 set /A files_cnt=!files_cnt!+1             )         )     )     echo 文件查找完毕,总共!files_cnt!个视频,命令如下。开启合并进程.......     echo ffmpeg -f concat -safe 0 -i !tmp_dir!\!dat!.txt -c copy !output_dir!!dat!.mp4     echo.     start ffmpeg -f concat -safe 0 -i !tmp_dir!\!dat!.txt -c copy !output_dir!!dat!.mp4 )

配置好record路径和输出路径,运行即可。

之后输出的mp4你有一定概率无法播放,因为米家摄像头采用的视频编码格式为hevc,很多平台没有这个格式的解码器。Windows下可以通过安装Media Player Codec Pack来解决,如果不想安装,则需要多一步命令,把他们都转成h.264

ffmpeg -i inputfile -map 0 -c:a copy -c:s copy -c:v libx264 output.mp4

每个文件都转一下就好啦。。

如果你想一气呵成,把上述脚本的倒数第二行改成

start ffmpeg -f concat -safe 0 -i !tmp_dir!\!dat!.txt -map 0 -c:a copy -c:s copy -c:v libx264 !output_dir!!dat!.mp4

只不过时间会很慢。。

如果生成了一个0kb大小的mp4,而且报错:

Could not find tag for codec pcm_alaw in stream #0, codec not currently supported in container Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument Error initializing output stream 0:1

说明音频编码有问题,将ffmpeg命令后的 -c:a copy 改为 -c:a aac 即可解决。具体命令在评论区。

附一张运行截图

image.png



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3